package main

import (
	"fmt"
)

/*
 *1. 输入明文和密钥
 *2. 将明文和密钥解析为Unicode编码
 *3. 将明文按密钥移位进行加密
 *4. 将明文重新解析为汉字
 */
func main() {

	var sel int64 
	fmt.Println("*****************************")
	fmt.Println("*   (请选择)please select:   *")
	fmt.Println("*                           *")
	fmt.Println("*   1. (加密)encryption.     *")
	fmt.Println("*   2. (解密)decrypt.        *")
	fmt.Println("*   0. (退出)exit.           *")
	fmt.Println("*****************************")

	fmt.Scanf("%d", &sel)

	switch sel {
	case 1:
		enc()
	case 2:
		dec()
	case 0:
		fmt.Println("退出程序")
		return
	default:
		fmt.Println("退出程序")
		return
	}

	fmt.Println("请按任意键并回车退出程序。")
	var exit string
	fmt.Scan(&exit)
}

/*
 *加密
 */
func enc(){
	var mInput string
	fmt.Println("请输入要加密的明文:")
	fmt.Scan(&mInput)
	mCode := ChineseToASCIIArr(mInput)
	if mCode == nil {
		return
	}

	var kInput string
	fmt.Println("请输入密钥:")
	fmt.Scan(&kInput)
	kCode := ChineseToASCIIArr(kInput)
	if kCode == nil {
		return
	}

	cCode := encryption(mCode, kCode)
	
	result := ASCIIToChinese(cCode)
	println(result)
}

func dec(){
	var cInput string
	fmt.Println("请输入密文:")
	fmt.Scan(&cInput)
	cCode := ChineseToASCIIArr(cInput)
	if cCode == nil {
		return
	}

	var kInput string
	fmt.Println("请输入密钥:")
	fmt.Scan(&kInput)
	kCode := ChineseToASCIIArr(kInput)
	if kCode == nil {
		return
	}

	mCode := decrypt(cCode,kCode)
	result := ASCIIToChinese(mCode)
	println(result)
}